﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Helpers;
using System.Web.Mvc;
using System.Web.UI;
using GigaSite.Domain.Interfaces.Repositories;
using GigaSite.Domain.IoC;

namespace GigaSite.Web.Controllers
{
    /// <summary>
    /// Контроллер по обработке изображений
    /// </summary>
    [OutputCache(Duration = 3600, VaryByParam = "id", Location =  OutputCacheLocation.ServerAndClient)]
    public class ImagesController : BaseController
    {
        /// <summary>
        /// Отдает уменьшенную копию изображения, подогнанную под указанный размер
        /// </summary>
        /// <param name="id">Идентификатор изображения из системы</param>
        /// <param name="height">Необходимая высота</param>
        /// <param name="width">Необходимая ширина</param>
        /// <returns>Файл изображения</returns>
        public ActionResult Thumb(long id, int height, int width)
        {
            // Репозиторий
            var images = Locator.GetService<IImagesRepository>();

            // Загружаем объект
            var image = images.Load(id);
            if (image == null)
            {
                Response.StatusCode = 404;
                return Content(String.Empty);
            }

            // Загружаем изображения
            var webImage = new WebImage(image.GetFullServerPath());

            // Решаем надо ли нам его обрезать
            if (webImage.Height > webImage.Width)
            {
                webImage.Crop(0, 0, webImage.Height - webImage.Width, 0);
            }

            // масштабируем
            webImage.Resize(width, height);

            // Отдаем
            return File(webImage.GetBytes("png"), "image/png");
        }
    }
}
